package com.dongzili.common.user;

import cn.dev33.satoken.exception.NotLoginException;
import cn.dev33.satoken.stp.StpUtil;
import com.dongzili.common.entity.Role;
import com.dongzili.common.entity.User;

import java.util.ArrayList;
import java.util.List;

/** 当前登录用户信息帮助工具类 */
public class UserHelper {

    /** 获取当前登录会话的用户信息 */
    public static User getCurrentUser(){
        if (!StpUtil.isLogin()){
            throw new NotLoginException("请去登录...","","");
        }
        return (User) StpUtil.getSession().get("user");
    }

    /** 获取当前登录会话的角色 */
    public static List<Role> getCurrentUserRoles(){
        if (getCurrentUser().getRoles()!=null){
            return getCurrentUser().getRoles();
        }
        return new ArrayList<>();
    }

    /** 获取所有已登录的会话id */
    public static Integer getCurrentUserCount(){
        List<String> sessionIdList = StpUtil.searchSessionId("", 0, -1, false);
//        for (String sessionId : sessionIdList) {
//
//            // 根据会话id，查询对应的 SaSession 对象，此处一个 SaSession 对象即代表一个登录的账号
//            SaSession session = StpUtil.getSessionBySessionId(sessionId);
//
//            // 查询这个账号都在哪些设备登录了，依据上面的示例，账号A 的 SaTerminalInfo 数量是 3，账号B 的 SaTerminalInfo 数量是 2
//            List<SaTerminalInfo> terminalList = session.terminalListCopy();
//            System.out.println("会话id：" + sessionId + "，共在 " + terminalList.size() + " 设备登录");
//        }
        return sessionIdList.size();
    }
}
